package gui;

import javafx.scene.shape.Ellipse;

import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;

/**
 * Created with IntelliJ IDEA.
 * User: Eliseo
 * Date: 05.11.13
 * Time: 22:04
 */
public class Ball extends Ellipse2D.Double {

    private final static double radius = 15;
    int panelSizeWidth;
    int panelSizeHeight;
    double speed = 3;
    int dx = 1;
    int dy = -1;
    boolean geradeAusFlug = false;


    public Ball() {
        super(450, 450, radius, radius);  //476

    }

    public void move(Graphics g, int width, int height) {
        panelSizeHeight = height;
        panelSizeWidth = width;
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.white);

        int r = 15;

        //Abfrage des Randes links
        if (this.x <= 0) {
            dx = 1;
            resetBall();
        }
        //Abfrage des Randes Rechts
        if (this.x + r >= width) {
            dx = -1;
            resetBall();
        }

        //Die Variable dx bestimmt ob der ball nach rechts oder links fliegt
        if (dx == -1) {
            this.x -= speed;

        } else {
            this.x += speed;

        }
        //Abfrage oberer Rand
        if (this.y <= 0) {
            dy = 1;
        }
        //Abfrage unterer Rand
        if (this.y + r >= height) {
            dy = -1;
        }


        if (!geradeAusFlug) {
            if (dy == -1) {
                this.y -= speed;
            } else {
                this.y += speed;
            }
        }


        g2d.fill(this);


    }

    public void resetBall() {

        this.x = panelSizeWidth / 2;
        this.y = panelSizeHeight / 2;
        //this.x = 450;
        //this.y = 450; //476
        setGeradeAusFlug(true);
        dx = 1;
    }

    /**
     * Wechselt die x Achse und setzt den Ball auf die letzte Position
     * bevor der Schläger berührt wurde
     */
    public void wechsleFlugRichtung() {
        int tempDx = dx;

        if (tempDx == 1) {
            dx = -1;
        }
        if (tempDx == -1) {
            dx = 1;

        }
    }

    public boolean isGeradeAusFlug() {
        return geradeAusFlug;
    }

    public void setGeradeAusFlug(boolean geradeAusFlug) {
        this.geradeAusFlug = geradeAusFlug;
    }
}
